import fs from 'fs';
import path from 'path';

/**
 * 创建空文件夹（递归创建）
 * @param dirPath 要创建的目录路径，可以是相对或绝对路径
 */
function createDirectory(dirPath: string): void {
    // 规范化路径（统一使用平台特定的分隔符）
    const normalizedPath = path.normalize(dirPath);

    // 分解路径为各个部分
    const pathParts = normalizedPath.split(path.sep);

    // 构建逐步增加的路径
    let currentPath = '';

    for (const part of pathParts) {
        if (!part) continue; // 跳过空部分（如开头的/或\）

        currentPath = currentPath ? path.join(currentPath, part) : part;

        // 处理Windows根路径（如C:）
        if (part.endsWith(':') && process.platform === 'win32') {
            continue;
        }

        if (!fs.existsSync(currentPath)) {
            try {
                fs.mkdirSync(currentPath);
            } catch (err: any) {
                // 如果目录已由其他进程创建，忽略错误
                if (err.code !== 'EEXIST') {
                    throw err;
                }
            }
        }
    }
}

export default createDirectory;